/*
 * Copyright (C) 2012 genzo
 */
package jp.gr.java_conf.genzo.wolrepeater;

import java.io.Serializable;

import com.google.gson.annotations.SerializedName;

/**
 *
 * 登録情報クラス.
 *
 * gsonを使ったシリアライズ/デシリアライズ用クラス。
 *
 */
public class MachineInfo implements Serializable {

    /** デフォルトポートNo. */
    private static final int DEF_PORT = 9;

    /** MAC アドレス. **/
    @SerializedName("mac")
    private String mMac = null;
    /** IPアドレス. **/
    @SerializedName("ip")
    private String mIp = null;
    /** 送信ポート番号. **/
    @SerializedName("port")
    private int mPort = DEF_PORT;

    /** ping結果. **/
    private transient boolean mIsAlive = false;

    /**
     * コンストラクタ.
     */
    public MachineInfo() {
    }

    /**
     * コンストラクタ.
     *
     * @param mac
     *            MACアドレス
     * @param ip
     *            IPアドレス
     * @param port
     *            ポート番号
     */
    public MachineInfo(String mac, String ip, int port) {
        mMac = mac;
        mIp = ip;
        mPort = port;
    }

    /**
     * MACアドレス取得.
     *
     * @return MACアドレス
     */
    public String getMac() {
        return mMac;
    }

    /**
     * IOアドレス取得.
     *
     * @return IPアドレス
     */
    public String getIp() {
        return mIp;
    }

    /**
     * 送信ポート番号.
     *
     * @return 送信ポート番号
     */
    public int getPort() {
        return mPort;
    }

    /**
     * ping状態取得.
     *
     * @return true:生きてる false:死んでる
     */
    public boolean isAlive() {
        return mIsAlive;
    }

    /**
     * ping状態設定.
     *
     * @param alive
     *            true:生きてる false:死んでる
     * @return true:変化あり false:変化なし
     */
    public boolean setAlive(boolean alive) {
        boolean result = mIsAlive != alive;
        mIsAlive = alive;
        return result;
    }

}
